二进制的详细讲解

------------恢复内容开始------------

------------恢复内容开始------------

  进制的转换

  十进制转相应进制

      (十进制)231 转 八进制 除八取余法 从下而上取余

       231/8=28 ....7

          28/8=3.......4

          3/8=0........3

       (十进制)231=(八进制)0o347

      (十进制)231 转 16进制  除十六取余法 从下而上取余

         231/16=14......7

         14/16=0..........14

        (十进制) 231=(十六进制)0xe7

      (十进制)231.3 转 16进制  (*)小数部分  乘十六取整法 从上而下取整

       0.3*16=0.48............0

       0.48*16=7.68..........7

       0.68*16=10.88........10

       0.88*16=14.08........14

       0.08*16=1.28..........1

       0.28*16=4.48 .........4

       (十进制)231.3=(十六进制)0xe7.07ae14    

  相应进制转十进制

      (八进制)0o27.43转 十进制

        7*8^0+2*8^1=(八进制)23

        4*8^-1+3*8^-2=35/64=0.546875

        0o27.43=(十进制)23.546875

       

      (十六进制)0o27.43转 十进制(同上)

        。。。。。。。。

  进制换算补充

      在进行十转二,八,十六进制小数点换算时,不管怎么乘二,八或十六,结果小数部分始终不为零时,分别有一舍二入,三舍四入,七舍八入对应操作

      八进制直接转十六进制或者十六转八,只有通过二进制,或十进制中间过渡,没有捷径,如果哪位大神有直接转换的方法欢迎告知

 二进制的原码,反码,补码

       正数的原码,反码,补码

            24=(二进制)00....00011000

            原码:00....00011000

            反码:00....00011000

            补码:00....00011000

       负数的原码,反码,补码

            -24=(二进制)1000....00011000

            原码:1000.....00011000

            反码:11111....11100111

            补码:1000.....11101000 (反码加一)

  二进制的运算  

        计算机对数字的加减运算都是用补码

            -23(原码):1000.....00010111

            -23(反码):1111......11101000

               -23(补码):1111......11101001

             12(原码):0000.....00001100

             12(反码):0000.....00001100

                12(补码):0000.....00001100

             

              12(补码)0000.....00001100(补码相加时,高位也就是符号位也要运算进来)

              -23(补码)1111......11101001

            `  -23(补码)+12(补码)=1111......11110101(结果如果是负数,也就是高位是1,取反加一)

              (结果取反加一)1000......00001011= -23+12=-11

        &(与),^(异或),|(或) ,~(按位取反)  (*) 

               &(与)(1&1=1,1&0=0,0&0=0)

             101010001

             1101 00111

              =100000001

             ^(异或)(1^1=0,0^0=0,0^1=1)

             101010001

             1101 00111

              =01111 0110 

                |(或)(1|0=1,1|1=1,0|0=0)

             101010001

             1101 00111

              =11111 0110  

             ~(按位取反)对补码进行取反,取反结果为负,进行反码加一

            -12

            原码:100........1100

            反码:111.........0011

            补码:111.........0100

            取反:000.........1011=11

            12    

            原码:000........1100

            反码:000........1100

            补码:000........1100

            取反:111.........0011 结果负数,反码加一

                       100........1101=-13

            1        

            原码:000........0001

            反码:000.........0001

            补码:000.........0001

            取反:111.........1110

                 100..........0010=-2

            -1        

            原码:100........0001

            反码:111.........1110

            补码:111.........1111

            取反:000.........0000=0

        位移算数左移<<,算数右移>>,逻辑右移>>>(全都是补码进行的位移)

            5>>2=1

            (补码)00..0101>>2=00..0001

            -5>>2=-2

            10..0101

             (补码)11..1010+1=11..1011

            11..1011>>2=1111..1110(为负数,要反码+1)

            1000..0001+1=1000..0010=-2

            5>>>2=1(和算数位移结果一样)

            (补码)00..0101>>2=00..0001       

            -5>>>2=1073741822

            10..0101

             (补码)11..1010+1=11..1011

            11..1011>>>2=0011..1110(逻辑右移,高位始终补零,所以不用反码补一,结果就是一个很大的整数)

 

            

            

            

            

 

 

             

             

 

 

                

            

            

             

             

                     

             

            

     

    

        

       

         

         

   

      

       

------------恢复内容结束------------

------------恢复内容结束------------

posted @ 2020-04-25 17:13  青苔下的  阅读(1888)  评论(0编辑  收藏  举报